package cn.ygh.bbo.system.service;

import cn.ygh.bbo.framerwork.core.BaseService;
import cn.ygh.bbo.framerwork.core.Grid;
import cn.ygh.bbo.system.bean.AdminRole;
import org.springframework.data.domain.Pageable;
import java.io.Serializable;
import java.util.List;

/**
 * 描述：管理员角色  Service
 * @author ygh
 */
public interface AdminRoleService extends BaseService {
    /**
     * 保存对象
     * @param adminRole 对象信息
     * @return
     */
    int save(AdminRole adminRole);

    /**
     * 更新对象
     * @param adminRole 对象信息
     * @return
     */
    int update(AdminRole adminRole);

    /**
     * 批量更新
     * @param adminRole 对象信息
     * @param ids
     * @return
     */
    int updateBatchByIds(AdminRole adminRole, Serializable[] ids);

    /**
    * 根据ID删除对象
    * @param id
    * @return
    */
    int deleteById(Serializable id);

    /**
    * 根据ID数组批量删除对象
    * @param ids
    * @return
    */
    int deleteByIds(Serializable[] ids);

    /**
    * 根据ID获取对象
    * @param id
    * @return
    */
    AdminRole getById(Serializable id);

    /**
    * 根据ID数组获取对象列表
    * @param ids
    * @return
    */
    List<AdminRole> listfindByIn(Serializable[] ids);

    /**
    * 根据对象信息获取满足条件的对象列表
    * @param adminRole 对象信息
    * @param pageable 分页条件为空则不分页
    * @return
    */
    List<AdminRole> listfind(AdminRole adminRole, Pageable pageable);

    /**
    * 根据对象信息获取满足条件的对象列表和总数
    * @param adminRole 对象信息
    * @param pageable 分页条件
    * @return
    */
    Grid listGrid(AdminRole adminRole, Pageable pageable);

    /**
     * 获取管理员角色关联信息
     * @param adminId
     * @return
     */
    List<AdminRole>listfindByAdminId(Integer adminId);


    /**
     * 通过管理员Id 和 角色Id获取 关联信息
     * @param roleId
     * @param adminId
     * @return
     */
    AdminRole findByRoleIdAndAdminId(Integer roleId, Integer adminId);


    /**
     * 删除管理员相关显现
     * @param adminId
     * @return
     */
    long deleteByAdminId(Integer adminId);

    /**
     * 获取相关关联数量
     * @param adminId
     * @param roleId
     * @return
     */
    long getCountByAdminIdAndRoleId(Integer adminId,Integer roleId);
}
